package com.neuedu.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileExample  {
    /**
     *   1:把图片从一个路径复制到另一个路径--图片的复制
     *   
     *   处理的方式：字节流 和字符流
     *   输入和输出的方式：输入流和输出流
     *   功能的不同：节点流和处理流
     *   
     *   FileInputStream
     *      BufferedInputStream
     *      
     *   
     *   FileOutputStream
     *      BufferedOutputStream
     *      
     *     
     *     
     *   File   
     *   
     */
	public static void main(String[] args) throws Exception{
		//1:提取数据
		
		//1）原始图片的路径
		/*File file=new File("d:/eg_tulip.jpg");*/
		File file=new File("d:\\eg_tulip.jpg");
		//2) 文件输入流
		FileInputStream fis=new FileInputStream(file);
		//3) 缓存输入流--提高读取的速度
		BufferedInputStream bis=new BufferedInputStream(fis);
		
		//2:复制图片
		//1)复制的路径及其文件名
		File targetfile=new File("e:/tup.jpg");
		//判断文件是否存在，如果不存在，创建
		if(!targetfile.exists()) {
			targetfile.createNewFile();
		}
		//2)文件输出流
		
		FileOutputStream fos=new FileOutputStream(targetfile);
		//3) 缓存输出流--提高写的速度
		BufferedOutputStream bos=new BufferedOutputStream(fos);
		//2-4) 上面提取到的数据放入此目标文件中
		//1-4）读取数据
				byte[] b=new byte[1024];
				int leng=0;
				while((leng=bis.read(b))!=-1) {
					//保证最后一次提取数据的有效长度
					bos.write(b, 0, leng);
				}
				
		
		//3:关闭
				
				if(bos!=null) {
					bos.close();
				}
				if(bis!=null) {
					bis.close();
				}
				if(fos!=null) {
					fos.close();
				}
				if(fis!=null) {
					fis.close();
				}
		
	}
	
	
	
	
	
	
	
	
	
	
}
